可写性(writable):是否可为属性赋予新值。 可枚举性(enumerable): 是否可以用for…in、Object.keys( )循环遍历出,是否可以使用JSON.stringify() 序列化为json格式,若不可枚举,仍可访问。 可配置性(configurable):是否可以修改对象属性的行为。只有可配置的对象才可以delete 删除掉。可以使用Object.definedProperty()定义是否可写、可枚举。若不可配置,只可以将对象的可写性(writable) 由true改为false。
- 创建对象并定义其属性描述:
- var tempObj = Object.create(Object.prototype, {
a: { writable: true, enumerable: true, value: 1 }, b: { enumerable: true, value: 2 } });
- 检测属性:
- var tempObj = { a:1};
- var r = ‘a’;
- if( tempObj.a ){…}
- if( tempObj[r] ){…}
- if( ‘a’ in tempObj ){..}
- if( r in tempObj ){..}
- if( tempObj.hasOwnProperty(‘a’) ){…}
- if( tempObj.hasOwnProperty(r) ){…}
- if( tempObj.propertyIsEnumerable(‘a’)){…}
- if( tempObj.hasOwnProperty(r) ){…}
- 设置属性:
- Object.defineProperty(tempObj, ‘a’, {
value: 222, enumerable: false, writable: false, configurable: false });
- 获取属性描述:
- Object.getOwnPropertyDescriptor(tempObj, ‘a’);
获取对象所有自有属性名: Object.getOwnPropertyNames(); Object.keys();(获取可枚举键); for…in;(获取可枚举键);